/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package main;

import collision.Generador;
import java.io.DataInputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import util.Dictionary;

/**
 *
 * @author root
 */
public class main {
public static void main(String args[]) {
    while(true) {
        try {
            System.out.println("[+][+][+][+][+][+][+][+][+][+][+][+][+][+][+][+]");
            System.out.println("[+]                                          [+]");
            System.out.println("[+]    SUITE DE SEGURIDAD Y CRIPTOGRAFIA     [+]");
            System.out.println("[+]                 CryptHunt                [+]");
            System.out.println("[+]               -------------              [+]");
            System.out.println("[+]                Ver 0.6 Beta              [+]");
            System.out.println("[+]                                          [+]");
            System.out.println("[+]        Debci <debci@elhacker.net>        [+]");
            System.out.println("[+]                                          [+]");
            System.out.println("[+][+][+][+][+][+][+][+][+][+][+][+][+][+][+][+]\n\n");
            System.out.println("[1]-Crackear una hash");
            System.out.println("[2]-Encriptar un texto (Diferentes algoritmos)");
            System.out.println("[3]-Crackeo personalizado");
            System.out.println("[4]-Forzar un servicio remoto");
            System.out.println("[5]-Funciones de cluster");
            System.out.println("[6]-Salir");
            System.out.println("\n");
            System.out.println("[!]Introduzca su opcion:");
            DataInputStream dis = new DataInputStream(System.in);
            String opcionLeida = dis.readLine();
            System.out.println();

            if(opcionLeida.equals("1")) {

                Generador generador = new Generador();
                System.out.println("[!]Introduzca el nombre del algoritmo que desea crackear:");
                String algoritmoLeido = dis.readLine();
                System.out.println("[!]Introduzca la hash a crackear:");
                String hashLeido = dis.readLine();
                char[] mapaChars = Dictionary.getDictionary();
                int longitud = 7;
                generador.getAllCombo(hashLeido, algoritmoLeido, mapaChars, longitud);
              
            }else if(opcionLeida.equals("2")) {

                System.out.println("[!]Introduzca la palabra que desea resumir:");
                String WordToHash = dis.readLine();
                System.out.println("[!]Introduzca el algoritmo que desea usar para resumir:");
                String algorithmToUse = dis.readLine();
                String hashEncriptado = Generador.encriptaMD5(WordToHash.trim(), algorithmToUse.trim());
                System.out.println("[+]La palabra " + WordToHash.trim() + " ha sido encriptada"
                        + " correctamente con el algoritmo " + algorithmToUse.trim() + " a la hash siguiente:\n" + hashEncriptado);
            }else if(opcionLeida.equals("3")) {
                System.out.println("[!]Introduzca el hash que desea atacar:");
                String hashString = dis.readLine();
                System.out.println("[!]Introduzca el algoritmo que desea crackear:");
                String algoritmo = dis.readLine();
                System.out.println("[!]Introduzca la longitud de la hipotetica cadena:");
                String longitud = dis.readLine();
                int length = Integer.parseInt(longitud);
                Generador generador1 = new Generador();
                char[] mapaChars = Dictionary.getDictionary();
                generador1.getAllCombo(hashString, algoritmo, mapaChars, length);
            }else if(opcionLeida.equals("6")) {
                System.out.println("[+]Saliendo del programa...\n\n");
                System.out.println("                -Hack for Free-");
                Thread.sleep(8000);
                System.exit(0);
            }

        }   catch (InterruptedException ex) {
                Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
}
